As it is generally known, many new Web application technologies provided on the Internet today are referred to as “Web 2.0”. These technologies include a second generation of Web-based communities and hosted services (e.g. social-networking sites, wikis, folksonomies, etc.), and are intended to facilitate collaboration and sharing between users. Applications in this area usually include simple to use user interfaces, and typically share some important technical attributes. For example, Web 2.0 applications often expose an XML (eXtensible Mark-up Language)-based “REST” (“Representational State Transfer”) API (Application Programming Interface) for invoking Web services over HTTP (HyperText Transfer Protocol), and have the ability to interact with the server asynchronously via AJAX (Asynchronous Javascript and XML).
In addition, there are an increasing number of Web sites that expose their data in XML formats such as the traditional RSS (Really Simple Syndication) format and/or the more recent Atom format. These publishing formats let users view headlines of the latest updates from their favorite blogs and Web sites all from within a single newsreader program. Such XML-based formats, also referred to as “feeds,” “news feeds” or “Web feeds,” typically include headlines, short descriptions, and links to articles. Existing systems allow reading of data provided through these publishing formats, as well as updating the via the aforementioned REST APIs.
Some of the most sought after features of Web sites today that can leverage such technologies are Comment feed controls, Discussion Thread functionality, and/or news feed aggregations that allow users to read and add data from various datasources or engage in discussions right on the current HTML page. In the past, Web site developers had to implement the user interface for these features separately for each Web site, and could not rely on a standard protocol to send/read information over HTTP. Furthermore, existing feed controls are clumsy, requiring frequent page refreshes resulting in high amounts of network traffic, and are too specific to be reused in multiple Web sites or Web applications exposing different data types.
One existing system provided by JS-Kit.com includes a toolkit inserted into the Web page via Javascript include, and allows for AJAX-style commenting that reduces page refreshes. However, this framework lacks configurable XML support, does not offer an event model, offers no configurability, and does not provide an easy way to modify look-and-feel via I/O bindings to an HTML template, thus making it useful only for very trivial commenting applications.
Some existing feed readers allow users to read nicely-rendered feeds in their Web pages. Some examples include Google Reader, Rojo, Gritwire, News Alloy, Pluck Web Edition, Bloglines, FeedLounge, Attensa Online, and Newsgator Online. These feed readers present feed data nicely on the page, but are all very limited in that the do not support arbitrary feed types (only RSS and ATOM), and do not offer an easy way to customize the look-and-feel of the feed thread. Another problem with such existing “online feed reader” systems is that they are not easily included in Web pages or configurable with a flexible event model for other “mashups” to integrate with. These systems also do not offer efficient XML parsing.
Some XML Javascript frameworks allow users to build applications, e.g. the Spry technology provided by Adobe. An RSS feed reader built with this framework is available online at the Adobe Labs web site. The main disadvantage of this framework is that it does not offer an HTML template binding approach using standard XPath for look-and-feel customization of the thread. This system also doesn't have effective optimization for fast XML parsing, and requires users to learn a separate declarative language in order to use the framework, beyond knowledge of HTML and XML.
Conventional gadget frameworks like Google, Microsoft and Yahoo Gadgets offer limited support in this area, but the tools they offer are severely limited. While such systems may allow for simple downloading of XML content, they do not offer convenient customization techniques or performance improvements. These systems also generally require a specific XML gadget format to be included in Web pages. There are also significant limitations in making POST requests to update data using these frameworks. Instead, it would be desirable to have a system that is independent of any specific gadget framework, and that can be included into any page very easily.